from PublicReference.base import *

等级 = 100 + 5


class 主动技能(主动技能):
    def 等效CD(self, 武器类型, 输出类型):
        if (self.所在等级 == 50 or self.所在等级 == 85 or self.所在等级 == 100) or 武器类型 != '手杖':
            return round(self.CD / self.恢复 * 武器冷却惩罚(武器类型, 输出类型, self.版本), 1)
        else:
            return round(self.CD / self.恢复, 1)


class 技能0(主动技能):
    名称 = '暗魂波'
    所在等级 = 5
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔), 等级精通)
    data1 = [int(i*1.0) for i in [0, 136, 149, 164, 176, 192, 206, 220, 233, 248, 261, 276, 285, 301, 316, 328, 345, 354, 371, 387, 397, 412, 429, 437, 453, 468, 480, 496, 509, 520, 537, 550, 565, 580, 592, 605,
           620, 636, 646, 663, 676, 687, 703, 718, 730, 746, 755, 770, 788, 800, 812, 828, 840, 854, 869, 881, 896, 911, 923, 937, 951, 964, 979, 994, 1008, 1020, 1035, 1047, 1062, 1078, 1089]]
    攻击次数1 = 3

    data2 = [int(i*1.0) for i in [0, 566, 626, 679, 742, 797, 857, 910, 970, 1029, 1087, 1140, 1206, 1254, 1315, 1375, 1428, 1494, 1547, 1598, 1664, 1718, 1773, 1837, 1893, 1947, 2006, 2062, 2124, 2182, 2236, 2292, 2351, 2407, 2467, 2526,
           2581, 2637, 2700, 2751, 2812, 2874, 2926, 2980, 3046, 3096, 3160, 3217, 3270, 3334, 3389, 3439, 3504, 3565, 3618, 3676, 3731, 3791, 3848, 3904, 3962, 4020, 4077, 4132, 4191, 4250, 4309, 4368, 4421, 4477, 4544]]
    攻击次数2 = 1
    # 蓄力增伤35%
    倍率 = 1.35
    CD = 3.5
    TP成长 = 0.08
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能1(主动技能):
    名称 = '诅咒之箭'
    所在等级 = 15
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.197) for i in [0, 424, 466, 509, 552, 596, 638, 682, 724, 767, 811, 855, 897, 941, 983, 1026, 1069, 1113, 1155, 1199, 1241, 1285, 1327, 1372, 1414, 1457, 1500, 1543, 1586, 1628, 1672, 1715, 1758, 1801, 1844, 1886, 1931, 1974, 2017, 2060, 2103, 2145, 2188, 2232, 2274, 2318, 2360, 2404, 2446, 2490, 2533, 2577, 2619, 2663, 2705, 2748, 2791, 2835, 2877, 2921, 2963, 3005, 3050, 3094, 3136, 3179, 3222, 3264, 3308, 3351, 3394]]
    攻击次数 = 5
    CD = 10
    TP成长 = 0.24
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能2(主动技能):
    名称 = '降临：尼古拉斯'
    备注 = '(蜘蛛团)'
    所在等级 = 15
    等级上限 = 60
    基础等级 = 46
    data1 = [int(i*1.0) for i in [0, 105, 114, 126, 135, 147, 158, 169, 179, 191, 200, 213, 222, 234, 243, 255, 263, 274, 285, 297, 306, 318, 327, 340, 349, 361, 371, 382, 393, 405, 414, 425, 435, 447, 457, 468, 479, 489, 501, 511, 522, 533, 543, 555, 565, 575, 586, 596, 607, 618, 629, 640, 650, 661, 672, 683, 694, 704, 715, 726, 736, 748, 757, 769, 779, 791, 800, 812, 822, 834, 844]]
    攻击次数1 = 3
    # 攻击倍率 = [0, 2.196825, 2.38730, 2.59047, 2.793650, 2.996587]
    CD = 1
    TP成长 = 0.1
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        if self.TP等级 > 0:
            # 变更形态后数组
            self.data1 = [int(i*1.0) for i in [0, 157, 172, 190, 204, 222, 236, 254, 269, 287, 301, 319, 334, 352, 366, 384, 395, 413, 427, 445, 460, 478, 492, 510, 524, 542, 557, 575, 589, 607, 622, 637, 654, 670, 686, 702, 719, 734, 751, 767, 784, 799, 816, 832, 848, 863, 878, 895, 911, 928, 943, 960, 976, 992, 1008, 1025, 1040, 1057, 1073, 1090, 1104, 1122, 1136, 1154, 1169, 1187, 1201, 1219, 1234, 1252, 1266]]
            self.攻击次数1 = 4
        return self.data1[self.等级] * self.攻击次数1 * (1 + self.TP成长 * self.TP等级) * self.倍率



class 技能3(主动技能):
    名称 = '降临：尼古拉斯(艾克洛索)'
    所在等级 = 15
    等级上限 = 1
    基础等级 = 1
    data1 = [int(i*1.0) for i in [0, 208, 229, 251, 272, 294, 316, 337, 359, 379, 400, 423, 444, 466, 487, 508, 528, 549, 572, 593, 614, 636, 657, 678, 700, 721, 743, 764, 786, 808, 829, 851, 872, 894, 916, 937, 959, 980,
           1001, 1023, 1044, 1065, 1087, 1109, 1131, 1151, 1172, 1194, 1215, 1238, 1259, 1280, 1299, 1321, 1343, 1365, 1386, 1407, 1429, 1451, 1473, 1494, 1515, 1537, 1559, 1581, 1602, 1622, 1644, 1666, 1687]]
    攻击次数1 = 1
    data2 = [int(i*1.0) for i in [0, 623, 687, 753, 814, 880, 943, 1008, 1073, 1136, 1201, 1266, 1331, 1396, 1459, 1524, 1586, 1652, 1715, 1780, 1844, 1909, 1974, 2037, 2103, 2167, 2231, 2295, 2358, 2423, 2487, 2553, 2617, 2681, 2746, 2809, 2874, 2939, 3003, 3067, 3132, 3197, 3261, 3325, 3390, 3454, 3518, 3582, 3647, 3711, 3777, 3841, 3904, 3969, 4033, 4097, 4161, 4225, 4290, 4355, 4420, 4484, 4548, 4612, 4676, 4740, 4805, 4868, 4933, 4998, 5063]]
    攻击次数2 = 1
    CD = 1
    TP成长 = 0.1

    def 等效百分比(self, 武器类型):
        if self.TP等级 > 0:
            # 变更形态后数组
            self.data1 = [int(i*1.0) for i in [0, 277, 306, 335, 362, 391, 420, 449, 478, 505, 534, 563, 592, 620, 649, 678, 704, 733, 762, 791, 820, 848, 877, 905, 934, 962, 991, 1020, 1048, 1076, 1105, 1134, 1163, 1192, 1220, 1249, 1278, 1307, 1334, 1363, 1392, 1421, 1450, 1478, 1507, 1535, 1564, 1592, 1621, 1650, 1679, 1708, 1734, 1763, 1792, 1820, 1849, 1878, 1907, 1936, 1964, 1993, 2021, 2050, 2078, 2107, 2136, 2164, 2192, 2221, 2250]]
            self.攻击次数1 = 3
            # 变更形态后攻击次数为0
            self.攻击次数2 = 0
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2)  * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能4(主动技能):
    名称 = '驱使僵尸'
    备注 = '自爆'
    所在等级 = 20
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.254) for i in [0, 533, 585, 638, 692, 747, 801, 854, 909, 962, 1018, 1069, 1123, 1177, 1233, 1287, 1340, 1393, 1447, 1503, 1555, 1610, 1664, 1718, 1771, 1825, 1879, 1931, 1986, 2038, 2095, 2147, 2202, 2256, 2309, 2364, 2417, 2473, 2527, 2581, 2632, 2687, 2742, 2796, 2849, 2905, 2955, 3010, 3065, 3117, 3172, 3225, 3277, 3334, 3388, 3444, 3495, 3550, 3605, 3659, 3711, 3764, 3819, 3873, 3928, 3982, 4033, 4086, 4140, 4195, 4249]]
    攻击次数 = 5
    CD = 8
    TP成长 = 0.10
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        # TP>3且加了buff,伤害会变得异常低,技能面板显示正常
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能5(主动技能):
    名称 = '服从'
    备注 = '远程'

    所在等级 = 20
    等级上限 = 20
    基础等级 = 10
    是否有伤害 = 0
    关联技能 = ['降临：尼古拉斯', '降临：尼古拉斯(艾克洛索)']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.0 + 0.04 * self.等级, 5)


class 技能6(被动技能):
    名称 = '黑暗之环'
    所在等级 = 20
    等级上限 = 20
    基础等级 = 10
    关联技能 = ['无']

    自定义描述 = 1

    def 技能描述(self, 武器类型):
        return '暗属性强化+' + str(self.属强加成())

    def 属强加成(self):
        if self.等级 == 0:
            return 0
        else:
            return (48 + self.等级 * 3)


class 技能7(主动技能):
    名称 = '暗影蛛丝阵'
    所在等级 = 25
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.197) for i in [0, 338, 373, 406, 439, 475, 509, 542, 577, 610, 646, 680, 713, 748, 782, 816, 851, 884, 920, 953, 987, 1022, 1056, 1089, 1125, 1159, 1191, 1226, 1260, 1295, 1328, 1362, 1398, 1432, 1465, 1501, 1533, 1569, 1603, 1636, 1671, 1704, 1740, 1774, 1808, 1843, 1877, 1909, 1945, 1979, 2012, 2048, 2080, 2117, 2150, 2183, 2218, 2252, 2287, 2321, 2355, 2390, 2423, 2457, 2492, 2527, 2561, 2594, 2629, 2663, 2697]]
    攻击次数 = 19
    CD = 20
    TP成长 = 0.07
    TP上限 = 5


    def 等效百分比(self, 武器类型):
        if self.TP等级 >0:
            # 点TP后数据下降
            self.倍率*=0.9
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能8(主动技能):
    名称 = '死亡之爪'
    所在等级 = 25
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.216) for i in [0, 2565, 2825, 3086, 3346, 3606, 3866, 4127, 4387, 4647, 4907, 5168, 5428, 5688, 5949, 6209, 6469, 6729, 6990, 7250, 7510, 7770, 8031, 8291, 8551, 8811, 9072, 9332, 9592, 9853, 10113, 10373, 10633, 10894, 11154, 11414, 11674, 11935, 12195, 12455, 12716, 12976, 13236, 13496, 13757, 14017, 14277, 14537, 14798, 15058, 15318, 15578, 15839, 16099, 16359, 16620, 16880, 17140, 17400, 17661, 17921, 18181, 18441, 18702, 18962, 19222, 19483, 19743, 20003, 20263, 20524]]
    攻击次数 = 1
    CD = 7
    TP成长 = 0.10
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能9(主动技能):
    名称 = '死灵之怨'
    所在等级 = 30
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.196) for i in [0, 316, 348, 379, 412, 444, 476, 508, 540, 572, 604, 637, 669, 700, 732, 765, 797, 829, 861, 893, 925, 958, 990, 1021, 1053, 1086, 1118, 1150, 1182, 1214, 1246, 1278, 1312, 1342, 1374, 1407, 1439, 1471, 1503, 1535, 1567, 1599, 1633, 1665, 1695, 1727, 1761, 1793, 1824, 1856, 1888, 1920, 1954, 1986, 2016, 2048, 2082, 2114, 2146, 2178, 2210, 2242, 2274, 2307, 2337, 2369, 2403, 2435, 2467, 2497, 2531]]
    攻击次数 = 13
    CD = 10
    TP成长 = 0.10
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能10(主动技能):
    名称 = '百鬼夜行'
    备注 = '(自爆)'
    所在等级 = 30
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.205) for i in [0, 275, 302, 330, 359, 386, 414, 443, 470, 498, 527, 552, 580, 607, 636, 664, 691, 720, 748, 775, 804, 832, 859, 888, 916, 943, 972, 1000, 1027, 1056, 1082, 1109, 1136, 1166, 1193, 1220, 1250, 1277, 1304, 1334, 1361, 1388, 1418, 1445, 1472, 1502, 1529, 1556, 1581, 1611, 1638, 1667, 1695, 1722, 1751, 1779, 1806, 1835, 1863, 1890, 1919, 1947, 1974, 2003, 2031, 2058, 2083, 2113, 2140, 2167, 2197]]
    攻击次数 = 14
    # 自爆增伤20%
    倍率 = 1.2
    CD = 10
    TP成长 = 0
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        if self.TP等级 == 0:
            return self.data[self.等级] * self.攻击次数 * self.倍率
        else:
            if self.TP等级 <= 3:
                return self.data[self.等级] * (self.攻击次数 + (self.TP等级 + 1)) * self.倍率
            else:
                if self.TP等级 <= 5:
                    return self.data[self.等级] * (self.攻击次数 + (self.TP等级 + 2)) * self.倍率


class 技能11(被动技能):
    名称 = '黑魔法书：亡者之魂'
    所在等级 = 30
    等级上限 = 10
    基础等级 = 1
    关联技能 = ['暗魂波', '诅咒之箭', '驱使僵尸', '暗影蛛丝阵', '死亡之爪', '死灵之怨', '百鬼夜行', '降临：暴君巴拉克', '暗击拳', '巴拉克强击',
            '杀戮乱舞', '吸魂暗劲波', '巴拉克的野心', '降临：僵尸莱迪娅', '巴拉克的愤怒', '千魂祭', '死灵之缚', '释魂暗劲波', '暗黑蛛丝引', '暴君极刑斩', '亡者君临：巴拉克之戮', '亡者之茧', '命运殇痕·摩罗斯之咒']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.21 + 0.015 * self.等级, 5)


class 技能12(主动技能):
    名称 = '降临：暴君巴拉克'
    备注 = '(3下平x+黑手)'
    所在等级 = 35
    等级上限 = 60
    等级精通 = 50
    基础等级 = 36
    data1 = [int(i*1.187) for i in [0, 429, 441, 456, 469, 484, 499, 515, 531, 547, 564, 581, 599, 618, 637, 657, 677, 698, 719, 741, 763, 788, 812, 837, 863, 890, 918, 943, 971, 996, 1023, 1049, 1073, 1103, 1128, 1155, 1181, 1208, 1234, 1262, 1287, 1313, 1340, 1366, 1394, 1419, 1444, 1471, 1499, 1526, 1550, 1578, 1605, 1630, 1656, 1684, 1710, 1735, 1763, 1790, 1816, 1843, 1869, 1896, 1921, 1948, 1974, 2000, 2028, 2055, 2081]] # 1
    攻击次数1 = 1
    data2 = [int(i*1.187) for i in [0, 475, 489, 505, 521, 538, 554, 571, 588, 606, 626, 644, 665, 685, 706, 728, 751, 774, 798, 823, 848, 875, 902, 930, 958, 988, 1018, 1048, 1079, 1107, 1135, 1166, 1194, 1225, 1255, 1283, 1312, 1341, 1373, 1401, 1429, 1459, 1488, 1519, 1549, 1578, 1606, 1635, 1665, 1694, 1726, 1753, 1782, 1811, 1841, 1871, 1900, 1930, 1959, 1988, 2016, 2046, 2076, 2106, 2134, 2164, 2194, 2224, 2253, 2282, 2310]]  # 2
    攻击次数2 = 1
    data3 = [int(i*1.187) for i in [0, 250, 257, 266, 274, 283, 291, 299, 309, 319, 329, 339, 349, 360, 371, 383, 396, 406, 419, 433, 446, 460, 474, 488, 503, 519, 536, 550, 566, 582, 598, 612, 629, 644, 659, 674, 689, 706, 721, 735, 753, 766, 782, 798, 813, 830, 844, 859, 876, 890, 903, 921, 937, 953, 968, 983, 999, 1014, 1030, 1044, 1060, 1076, 1091, 1107, 1122, 1138, 1153, 1169, 1181, 1197, 1213]]
    攻击次数3 = 5
    data4 = [int(i*1.187) for i in [0, 571, 589, 608, 626, 646, 665, 686, 707, 728, 751, 775, 799, 824, 849, 875, 903, 930, 959, 988, 1019, 1051, 1083, 1116, 1152, 1187, 1224, 1257, 1294, 1329, 1363, 1398, 1436, 1468, 1503, 1540, 1575, 1610, 1646, 1681, 1716, 1751, 1788, 1823, 1858, 1891, 1927, 1963, 1999, 2032, 2069, 2104, 2139, 2176, 2209, 2244, 2280, 2316, 2350, 2385, 2422, 2457, 2493, 2526, 2563, 2598, 2633, 2669, 2703, 2738, 2774]]  # 4
    攻击次数4 = 1
    CD = 1
    TP成长 = 0.1
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2 + self.data3[self.等级] * self.攻击次数3 + self.data4[self.等级] * self.攻击次数4) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能13(主动技能):
    名称 = '暗击拳'
    备注 = '爆炸'
    所在等级 = 35
    等级上限 = 1
    基础等级 = 1
    data = [int(i*1.0) for i in [0, 996, 1027, 1058, 1091, 1124, 1159, 1196, 1231, 1271, 1309, 1350, 1391, 1434, 1478, 1525, 1572, 1621, 1671, 1722, 1775, 1830, 1888, 1946, 2005, 2068, 2131, 2193, 2253, 2316, 2375, 2438, 2499, 2559, 2622, 2684, 2746, 2806, 2869, 2928, 2991, 3053, 3113, 3175, 3234, 3299, 3361, 3421, 3483, 3544, 3605, 3666, 3728, 3791, 3850, 3913, 3974, 4036, 4097, 4158, 4221, 4281, 4344, 4403, 4466, 4527, 4589, 4650, 4711, 4774, 4834]]
    攻击次数 = 1
    #data = [0, 1271, 1309, 1350, 1391, 1433, 1478, 1523, 1571, 1620, 1669, 1721, 1774, 1830, 1886, 1946, 2006, 2066,2130, 2198, 2265, 2333, 2408, 2483, 2558, 2636, 2719, 2794, 2876, 2951, 3026, 3109, 3184, 3266, 3341, 3420,3503, 3578, 3660, 3735, 3810, 3889, 3968, 4050, 4125, 4208, 4283, 4361, 4444, 4519, 4601, 4673, 4751, 4830,4909, 4988, 5066, 5145, 5224, 5303, 5378, 5456, 5535, 5614, 5693, 5771, 5850, 5929, 6008, 6086, 6161]
    CD = 3.0
    TP成长 = 0.1

    def 等效百分比(self, 武器类型):
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能14(主动技能):
    名称 = '巴拉克强击'
    所在等级 = 35
    等级上限 = 1
    基础等级 = 1
    data = [int(i*1.0) for i in [0, 1835, 1891, 1949, 2010, 2071, 2137, 2204, 2271, 2343, 2413, 2488, 2563, 2644, 2726, 2810, 2898, 2988, 3080, 3174, 3273, 3374, 3480, 3587, 3696, 3811, 3928, 4043, 4155, 4269, 4381, 4494, 4606, 4719, 4834, 4947, 5062, 5173, 5288, 5399, 5513, 5627, 5739, 5853, 5966, 6081, 6196, 6307, 6422, 6534, 6648, 6759, 6873, 6988, 7099, 7213, 7328, 7441, 7555, 7666, 7781, 7894, 8009, 8119, 8234, 8346, 8460, 8574, 8687, 8799, 8914]]
    攻击次数 = 1
    CD = 2.0
    TP成长 = 0.1

    def 等效百分比(self, 武器类型):
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能15(主动技能):
    名称 = '杀戮乱舞'
    所在等级 = 35
    等级上限 = 1
    基础等级 = 1
    data1 = [int(i*1.0) for i in [0, 996, 1027, 1058, 1091, 1124, 1159, 1196, 1231, 1271, 1309, 1350, 1391, 1434, 1478, 1525, 1572, 1621, 1671, 1722, 1775, 1830, 1888, 1946, 2005, 2068, 2131, 2193, 2253, 2316, 2375, 2438, 2499, 2559, 2622, 2684, 2746, 2806, 2869, 2928, 2991, 3053, 3113, 3175, 3234, 3299, 3361, 3421, 3483, 3544, 3605, 3666, 3728, 3791, 3850, 3913, 3974, 4036, 4097, 4158, 4221, 4281, 4344, 4403, 4466, 4527, 4589, 4650, 4711, 4774, 4834]]
    攻击次数1 = 3
    CD = 7.0
    TP成长 = 0.1
    是否有护石 = 1

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1) * (1 + self.TP成长 * self.TP等级) * self.倍率

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 2
        elif x == 1:
            self.倍率 *= 2 + 0.08


class 技能16(主动技能):
    名称 = '吸魂暗劲波'
    所在等级 = 40
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data1 = [int(i*1.228) for i in [0, 1327, 1461, 1596, 1731, 1865, 2000, 2134, 2269, 2404, 2538, 2673, 2808, 2942, 3077, 3212, 3346, 3481, 3615, 3750, 3885, 4019, 4154, 4289, 4423, 4558, 4693, 4827, 4962, 5096, 5231, 5366, 5500, 5635, 5770, 5904,
           6039, 6174, 6308, 6443, 6577, 6712, 6847, 6981, 7116, 7251, 7385, 7520, 7655, 7789, 7924, 8058, 8193, 8328, 8462, 8597, 8732, 8866, 9001, 9136, 9270, 9405, 9539, 9674, 9809, 9943, 10078, 10213, 10347, 10482, 10617]]
    攻击次数1 = 2
    data2 = [int(i*1.228) for i in [0, 5977, 6583, 7190, 7796, 8403, 9009, 9615, 10222, 10828, 11435, 12041, 12647, 13254, 13860, 14467, 15073, 15679, 16286, 16892, 17499, 18105, 18712, 19318, 19924, 20531, 21137, 21744, 22350, 22956, 23563, 24169, 24776, 25382, 25988, 26595,
           27201, 27808, 28414, 29020, 29627, 30233, 30840, 31446, 32053, 32659, 33265, 33872, 34478, 35085, 35691, 36297, 36904, 37510, 38117, 38723, 39329, 39936, 40542, 41149, 41755, 42361, 42968, 43574, 44181, 44787, 45394, 46000, 46606, 47213, 47819]]
    攻击次数2 = 1
    CD = 35
    TP成长 = 0.1
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能17(主动技能):
    名称 = '巴拉克的野心'
    所在等级 = 40
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data1 = [int(i*0.954) for i in [0, 2090, 2302, 2514, 2726, 2938, 3150, 3362, 3574, 3786, 3998, 4210, 4422, 4634, 4846, 5058, 5270, 5482, 5694, 5906, 6118, 6330, 6542, 6754, 6966, 7178, 7390, 7602, 7814, 8026, 8238, 8450, 8662, 8874, 9087, 9299, 9511, 9723,
           9935, 10147, 10359, 10571, 10783, 10995, 11207, 11419, 11631, 11843, 12055, 12267, 12479, 12691, 12903, 13115, 13327, 13539, 13751, 13963, 14175, 14387, 14599, 14811, 15023, 15235, 15447, 15659, 15871, 16084, 16296, 16508, 16720]]
    攻击次数1 = 1
    data2 = [int(i*1.214) for i in [0, 7389, 8139, 8888, 9638, 10388, 11137, 11887, 12637, 13386, 14136, 14886, 15635, 16385, 17135, 17884, 18634, 19384, 20133, 20883, 21633, 22382, 23132, 23881, 24631, 25381, 26130, 26880, 27630, 28379, 29129, 29879, 30628, 31378, 32128, 32877,
           33627, 34377, 35126, 35876, 36626, 37375, 38125, 38875, 39624, 40374, 41124, 41873, 42623, 43373, 44122, 44872, 45622, 46371, 47121, 47871, 48620, 49370, 50120, 50869, 51619, 52369, 53118, 53868, 54617, 55367, 56117, 56866, 57616, 58366, 59115]]
    攻击次数2 = 1
    CD = 25
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            # 游戏内bug 描述为1.18 小于理论提升,但是符合韩服数据
            self.倍率 *= 1.18 * 1.09
            self.CD *= 0.94
        elif x == 1:
            # 游戏内bug 描述为1.18  小于理论提升,但是符合韩服数据
            self.倍率 *= 1.18 * 1.18
            self.CD *= 0.94


class 技能18(被动技能):
    名称 = '巴拉克的盟约'
    所在等级 = 40
    等级上限 = 10
    基础等级 = 1

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.38 + 0.02 * self.等级, 5)


class 技能19(主动技能):
    名称 = '降临：僵尸莱迪娅'
    备注 = '(蓄力)'
    所在等级 = 45
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.1825) for i in [0, 453, 499, 545, 590, 635, 682, 729, 775, 819, 866, 912, 957, 1003, 1051, 1095, 1141, 1187, 1233, 1279, 1324, 1370, 1416, 1463, 1508, 1555, 1600, 1646, 1692, 1738, 1783, 1830, 1876, 1921, 1967, 2013, 2060, 2106, 2150, 2199, 2243, 2290, 2334, 2382, 2425, 2472, 2519, 2566, 2612, 2655, 2703, 2747, 2795, 2840, 2885, 2931, 2978, 3025, 3069, 3116, 3161, 3208, 3252, 3299, 3346, 3391, 3437, 3482, 3530, 3574, 3621]]
    攻击次数 = 30
    # 蓄力增伤
    倍率 = 1.3
    CD = 45
    TP成长 = 0.1
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return self.data[self.等级] * self.攻击次数 * self.倍率 * (1 + self.TP成长 * self.TP等级)


class 技能20(主动技能):
    名称 = '巴拉克的愤怒'
    所在等级 = 45
    等级上限 = 60
    学习间隔 = 2
    等级精通 = 50
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)

    data1 = [int(i*1.098) for i in [0, 891, 981, 1072, 1162, 1253, 1343, 1434, 1524, 1614, 1705, 1795, 1886, 1976, 2067, 2157, 2247, 2338, 2428, 2519, 2609, 2700, 2790, 2880, 2971, 3061, 3152, 3242, 3333, 3423, 3514, 3604, 3694, 3785, 3875, 3966, 4056, 4147, 4237, 4327, 4418, 4508, 4599, 4689, 4780, 4870, 4960, 5051, 5141, 5232, 5322, 5413, 5503, 5594, 5684, 5774, 5865, 5955, 6046, 6136, 6227, 6317, 6407, 6498, 6588, 6679, 6769, 6860, 6950, 7040, 7131]]
    data2 = [int(i*1.098) for i in [0, 895, 985, 1076, 1167, 1258, 1349, 1439, 1530, 1621, 1712, 1803, 1894, 1984, 2075, 2166, 2257, 2348, 2438, 2529, 2620, 2711, 2802, 2892, 2983, 3074, 3165, 3256, 3346, 3437, 3528, 3619, 3710, 3801, 3891, 3982, 4073, 4164, 4255, 4345, 4436, 4527, 4618, 4709, 4799, 4890, 4981, 5072, 5163, 5253, 5344, 5435, 5526, 5617, 5708, 5798, 5889, 5980, 6071, 6162, 6252, 6343, 6434, 6525, 6616, 6706, 6797, 6888, 6979, 7070, 7160]]
    data3 = [int(i*1.098) for i in [0, 757, 834, 910, 987, 1064, 1141, 1218, 1294, 1371, 1448, 1525, 1602, 1679, 1755, 1832, 1909, 1986, 2063, 2139, 2216, 2293, 2370, 2447, 2524, 2600, 2677, 2754, 2831, 2908, 2984, 3061, 3138, 3215, 3292, 3369, 3445, 3522, 3599, 3676, 3753, 3830, 3906, 3983, 4060, 4137, 4214, 4290, 4367, 4444, 4521, 4598, 4675, 4751, 4828, 4905, 4982, 5059, 5135, 5212, 5289, 5366, 5443, 5520, 5596, 5673, 5750, 5827, 5904, 5980, 6057]]
    data4 = [int(i*1.098) for i in [0, 3218, 3545, 3871, 4198, 4524, 4851, 5177, 5504, 5830, 6157, 6483, 6810, 7136, 7463, 7789, 8116, 8442, 8769, 9095, 9422, 9748, 10075, 10401, 10728, 11054, 11381, 11707, 12034, 12360, 12687, 13013, 13340, 13666, 13993, 14320, 14646, 14973, 15299, 15626, 15952, 16279, 16605, 16932, 17258, 17585, 17911, 18238, 18564, 18891, 19217, 19544, 19870, 20197, 20523, 20850, 21176, 21503, 21829, 22156, 22482, 22809, 23135, 23462, 23788, 24115, 24442, 24768, 25095, 25421, 25748]]
    data5 = [int(i*1.098) for i in [0, 8059, 8877, 9695, 10512, 11330, 12148, 12965, 13783, 14601, 15418, 16236, 17054, 17871, 18689, 19507, 20324, 21142, 21960, 22777, 23595, 24413, 25230, 26048, 26866, 27683, 28501, 29319, 30136, 30954, 31772, 32589, 33407, 34225, 35042, 35860, 36677, 37495, 38313, 39130, 39948, 40766, 41583, 42401, 43219, 44036, 44854, 45672, 46489, 47307, 48125, 48942, 49760, 50578, 51395, 52213, 53031, 53848, 54666, 55484, 56301, 57119, 57937, 58754, 59572, 60390, 61207, 62025, 62843, 63660, 64478]]

    data0 = [data1,data2,data3,data4,data5]
    次数 = [1,1,4,1,1]

    CD = 45
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    def 等效百分比(self, 武器类型):
        sum = 0
        for i in range(len(self.data0)):
            sum += self.data0[i][self.等级] * self.次数[i]
        return sum * self.倍率 * (1 + self.TP成长 * self.TP等级)

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            # 游戏内bug 描述为1.12 小于理论提升,但是符合韩服数据
            self.倍率 *= 1.12 * 1.05
            self.CD *= 0.89
        elif x == 1:
            # 游戏内bug 描述为1.12 小于理论提升,但是符合韩服数据
            self.倍率 *= 1.12 * 1.13
            self.CD *= 0.89


class 技能21(被动技能):
    名称 = '屠戮之惧'
    所在等级 = 48
    等级上限 = 40
    基础等级 = 20

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.075 + 0.015 * self.等级, 5)


class 技能22(主动技能):
    名称 = '千魂祭'
    所在等级 = 50
    等级上限 = 40
    学习间隔 = 5
    等级精通 = 30
    基础等级 = min(int((等级 - 所在等级) / 学习间隔 + 1), 等级精通)
    data1 = [int(i*1.082) for i in [0, 625, 770, 916, 1061, 1206, 1351, 1496, 1641, 1786, 1931, 2077, 2222, 2367, 2512, 2657, 2802, 2947, 3092, 3238, 3383,
           3528, 3673, 3818, 3963, 4108, 4253, 4399, 4544, 4689, 4834, 4979, 5124, 5269, 5414, 5560, 5705, 5850, 5995, 6140, 6285]]
    攻击次数1 = 9
    data2 = [int(i*1.216) for i in [0, 1933, 2381, 2829, 3277, 3726, 4174, 4622, 5070, 5519, 5967, 6415, 6863, 7312, 7760, 8208, 8656, 9105, 9553, 10001, 10449, 10898,
           11346, 11794, 12242, 12691, 13139, 13587, 14035, 14484, 14932, 15380, 15828, 16277, 16725, 17173, 17621, 18070, 18518, 18966, 19414]]
    攻击次数2 = 13
    data3 = [int(i*1.216) for i in [0, 12565, 15478, 18392, 21305, 24219, 27133, 30046, 32960, 35874, 38787, 41701, 44614, 47528, 50442, 53355, 56269, 59183, 62096, 65010, 67923,
           70837, 73751, 76664, 79578, 82492, 85405, 88319, 91232, 94146, 97060, 99973, 102887, 105801, 108714, 111628, 114542, 117455, 120369, 123282, 126196]]
    攻击次数3 = 1
    CD = 145
    # 核对data未加强
    # 攻击倍率 = 1.066

    def 技能描述(self, 武器类型):
        temp = ''
        temp += '降临：尼古拉斯, 降临：尼古拉斯(艾克洛索) Lv+5<br>'
        temp += '降临：暴君巴拉克, 暗击拳, 巴拉克强击, 杀戮乱舞Lv+4'
        return temp

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2 + self.data3[self.等级] * self.攻击次数3) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能23(主动技能):
    名称 = '死灵之缚'
    所在等级 = 60
    等级上限 = 40
    学习间隔 = 2
    等级精通 = 30
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.189) for i in [0, 790, 869, 949, 1029, 1108, 1190, 1270, 1348, 1428, 1508, 1588, 1668, 1749, 1827, 1908, 1990, 2069, 2149, 2230, 2308, 2388, 2470, 2549, 2629, 2707, 2787, 2868, 2948, 3031, 3110, 3189, 3268, 3349, 3429, 3510, 3589, 3668, 3748, 3829, 3909, 3988, 4069, 4148, 4227, 4310, 4390, 4470, 4548, 4629, 4709, 4788, 4869, 4950, 5028, 5108, 5188, 5268, 5350, 5430, 5508, 5590, 5670, 5749, 5829, 5909, 5988, 6068, 6148, 6229, 6309]]
    攻击次数 = 20
    CD = 30
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    def 等效百分比(self, 武器类型):
        return (self.data[self.等级] * self.攻击次数) * (1 + self.TP成长 * self.TP等级) * self.倍率

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.攻击次数 = 20 * (0.3 + 0.99)
        elif x == 1:
            self.攻击次数 = 20 * (0.3 + 0.99 + 0.1)


class 技能24(主动技能):
    名称 = '释魂暗劲波'
    所在等级 = 70
    等级上限 = 40
    学习间隔 = 2
    等级精通 = 30
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data1 = [int(i*1.1635) for i in [0, 1264, 1392, 1520, 1650, 1777, 1904, 2033, 2162, 2291, 2417, 2547, 2675, 2804, 2932, 3059, 3186, 3314, 3444, 3572, 3700, 3829, 3958, 4084, 4213, 4343, 4471, 4598, 4727, 4853, 4982, 5112, 5239, 5367, 5496,
           5625, 5752, 5882, 6010, 6137, 6266, 6394, 6523, 6649, 6779, 6905, 7034, 7163, 7293, 7419, 7548, 7677, 7804, 7932, 8062, 8190, 8319, 8446, 8572, 8702, 8831, 8959, 9086, 9215, 9343, 9472, 9600, 9729, 9856, 9986, 10113]]
    攻击次数1 = 6
    data2 = [int(i*1.1635) for i in [0, 10969, 12081, 13194, 14306, 15419, 16530, 17645, 18757, 19871, 20982, 22097, 23208, 24322, 25435, 26547, 27658, 28770, 29884, 30997, 32110, 33223, 34337, 35449, 36561, 37674, 38787, 39898, 41013, 42123, 43236, 44350, 45462, 46576, 47689,
           48802, 49915, 51027, 52139, 53252, 54366, 55478, 56591, 57701, 58816, 59928, 61042, 62154, 63266, 64378, 65491, 66605, 67717, 68830, 69944, 71056, 72169, 73282, 74393, 75508, 76619, 77732, 78844, 79958, 81069, 82184, 83296, 84410, 85522, 86637, 87746]]
    攻击次数2 = 1
    CD = 50
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.攻击次数1 = 6 * 1.27
            self.攻击次数2 = 1 * 1.27
            self.CD *= 0.9
        elif x == 1:
            self.攻击次数1 = 6 * 1.27
            self.攻击次数2 = 1 * (1.27 + 0.06)
            self.CD *= 0.9


class 技能25(主动技能):
    名称 = '暗黑蛛丝引'  # 一部分伤害分给尼古拉斯了，约2.32765倍
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    data1 = [int(i*1.19) for i in [0, 5435, 5986, 6537, 7089, 7640, 8192, 8743, 9294, 9846, 10397, 10949, 11500, 12051, 12603, 13154, 13706, 14257, 14808, 15360, 15911,
           16463, 17014, 17565, 18117, 18668, 19219, 19771, 20322, 20874, 21425, 21976, 22528, 23079, 23631, 24182, 24733, 25285, 25836, 26388, 26939]]
    攻击次数1 = 1
    data2 = [int(i*1.19) for i in [0, 7246, 7982, 8717, 9452, 10187, 10922, 11658, 12393, 13128, 13863, 14598, 15333, 16069, 16804, 17539, 18274, 19009, 19745, 20480, 21215,
           21950, 22685, 23421, 24156, 24891, 25626, 26361, 27097, 27832, 28567, 29302, 30037, 30772, 31508, 32243, 32978, 33713, 34448, 35184, 35919]]
    攻击次数2 = 1
    data3 = [int(i*1.19) for i in [0, 905, 997, 1089, 1181, 1273, 1365, 1457, 1549, 1641, 1732, 1824, 1916, 2008, 2100, 2192, 2284, 2376, 2468, 2560,
           2651, 2743, 2835, 2927, 3019, 3111, 3203, 3295, 3387, 3479, 3570, 3662, 3754, 3846, 3938, 4030, 4122, 4214, 4306, 4398, 4489]]
    攻击次数3 = 6
    CD = 20
    是否有护石 = 1

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2 + self.data3[self.等级] * self.攻击次数3) * (1 + self.TP成长 * self.TP等级) * self.倍率

    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.攻击次数1 = 0
            self.攻击次数2 = 0
            self.攻击次数3 = 6 * (1 + 3.53)
            self.CD *= 0.9


class 技能26(被动技能):
    名称 = '亡魂之息'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 11
    关联技能 = ['降临：尼古拉斯', '降临：尼古拉斯(艾克洛索)', '驱使僵尸', '暗影蛛丝阵', '死亡之爪', '死灵之怨', '百鬼夜行',
            '降临：暴君巴拉克', '暗击拳', '巴拉克强击', '杀戮乱舞', '吸魂暗劲波', '巴拉克的野心', '降临：僵尸莱迪娅',
            '巴拉克的愤怒', '千魂祭', '死灵之缚', '释魂暗劲波', '暗黑蛛丝引', '暴君极刑斩', '亡者君临：巴拉克之戮', '亡者之茧', '命运殇痕·摩罗斯之咒']
    关联技能2 = ['暗魂波', '诅咒之箭']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.16 + 0.02 * self.等级, 5)

    def 加成倍率2(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.31 + 0.02 * self.等级, 5)


class 技能27(主动技能):
    名称 = '暴君极刑斩'
    所在等级 = 80
    等级上限 = 40
    学习间隔 = 2
    等级精通 = 30
    基础等级 = min(int((等级 - 所在等级) / 学习间隔) + 1, 等级精通)
    data = [int(i*1.136) for i in [0, 43448, 47856, 52264, 56671, 61079, 65487, 69895, 74303, 78710, 83118, 87526, 91934, 96342, 100750, 105157, 109565, 113973, 118381, 122789, 127196,
          131604, 136012, 140420, 144828, 149236, 153643, 158051, 162459, 166867, 171275, 175682, 180090, 184498, 188906, 193314, 197722, 202129, 206537, 210945, 215353]]
    攻击次数 = 1
    CD = 45
    是否有护石 = 1

    def 等效百分比(self, 武器类型):
        return self.data[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率

    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.31


class 技能28(主动技能):
    名称 = '亡者君临：巴拉克之戮'
    所在等级 = 85
    等级上限 = 40
    学习间隔 = 5
    等级精通 = 30
    基础等级 = min(int((等级 - 所在等级) / 学习间隔 + 1), 等级精通)
    data1 = [int(i*1.189) for i in [0, 18411, 22681, 26949, 31219, 35489, 39758, 44028, 48297, 52566, 56835, 61105, 65376, 69644, 73914, 78182, 82452, 86722, 90990, 95261, 99530, 103799,
           108069, 112338, 116607, 120876, 125147, 129416, 133685, 137955, 142223, 146493, 150763, 155032, 159302, 163571, 167840, 172110, 176379, 180648, 184917]]
    攻击次数1 = 1
    data2 = [int(i*1.189) for i in [0, 2509, 3091, 3673, 4255, 4837, 5419, 6002, 6584, 7166, 7748, 8329, 8911, 9493, 10075, 10657, 11239, 11821, 12403, 12985, 13567,
           14149, 14731, 15313, 15895, 16477, 17060, 17642, 18224, 18805, 19387, 19969, 20550, 21132, 21714, 22296, 22878, 23460, 24042, 24624, 25206]]
    攻击次数2 = 11
    data3 = [int(i*1.189) for i in [0, 46029, 56704, 67377, 78051, 88725, 99397, 110071, 120745, 131419, 142093, 152766, 163440, 174113, 184787, 195461, 206134, 216808, 227482, 238156, 248829,
           259503, 270176, 280850, 291524, 302198, 312872, 323544, 334218, 344892, 355565, 366240, 376914, 387587, 398261, 408933, 419607, 430282, 440955, 451629, 462303]]
    攻击次数3 = 1
    CD = 180

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数1 + self.data2[self.等级] * self.攻击次数2 + self.data3[self.等级] * self.攻击次数3) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能29(被动技能):
    名称 = '冥河之钥'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 4

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能30(主动技能):
    名称 = '亡者之茧'
    所在等级 = 95
    等级上限 = 40
    学习间隔 = 2
    等级精通 = 30
    基础等级 = min(int((等级 - 所在等级) / 学习间隔 + 1), 等级精通)
    data1 = [int(i*1.196) for i in [0, 4803, 5290, 5777, 6264, 6752, 7239, 7726, 8213, 8701, 9188, 9675, 10162, 10650, 11137, 11624, 12111, 12599, 13086, 13573, 14060, 14547, 15035, 15522, 16009, 16496, 16984, 17471, 17958, 18445, 18933, 19420, 19907, 20394, 20881, 21369, 21856, 22343, 22830, 23318, 23805, 24292, 24779, 25267, 25754, 26241, 26728, 27216, 27703, 28190, 28677, 29164, 29652, 30139, 30626, 31113, 31601, 32088, 32575, 33062, 33550, 34037, 34524, 35011, 35499, 35986, 36473, 36960, 37447, 37935, 38422]]
    攻击次数 = 5
    data2=[int(i*1.196) for i in [0, 56032, 61716, 67400, 73084, 78769, 84454, 90138, 95822, 101507, 107191, 112875, 118559, 124245, 129929, 135613, 141297, 146983, 152667, 158351, 164035, 169720, 175404, 181088, 186772, 192458, 198142, 203826, 209510, 215194, 220880, 226564, 232248, 237932, 243617, 249302, 254986, 260670, 266355, 272039, 277723, 283407, 289093, 294777, 300461, 306145, 311831, 317515, 323199, 328883, 334568, 340252, 345936, 351621, 357306, 362990, 368674, 374358, 380042, 385728, 391412, 397096, 402780, 408465, 414150, 419834, 425518, 431203, 436887, 442571, 448255]]
    攻击次数2 = 1
    CD = 60.0

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数 + self.data2[self.等级] * self.攻击次数2) * self.倍率


class 技能31(主动技能):
    名称 = '命运殇痕·摩罗斯之咒'
    所在等级 = 100
    等级上限 = 40
    学习间隔 = 5
    等级精通 = 30
    基础等级 = min(int((等级 - 所在等级) / 学习间隔 + 1), 等级精通)
    data1 = [int(i*1.197) for i in [0, 283901, 349736, 415568, 481400, 547233, 613065, 678899, 744732, 810564, 876396, 942228, 1008063, 1073895, 1139727, 1205560, 1271392, 1337226, 1403059, 1468891, 1534723, 1600555, 1666390, 1732222, 1798054, 1863887, 1929719, 1995553, 2061386, 2127218, 2193050, 2258882, 2324717, 2390549, 2456381, 2522214, 2588046, 2653880, 2719713, 2785545, 2851377, 2917209, 2983044, 3048876, 3114708, 3180541, 3246373, 3312207, 3378040, 3443872, 3509704, 3575536, 3641371, 3707203, 3773035, 3838868, 3904700, 3970534, 4036367, 4102199, 4168031, 4233863, 4299698, 4365530, 4431362, 4497195, 4563027, 4628861, 4694694, 4760526, 4826358]]
    攻击次数 = 1
    CD = 290.0

    关联技能 = ['无']

    def 加成倍率(self, 武器类型):
        return 0.0

    def 等效百分比(self, 武器类型):
        return (self.data1[self.等级] * self.攻击次数) * self.倍率

技能列表 = []
i = 0
while i >= 0:
    try:
        exec('技能列表.append(技能' + str(i) + '())')
        i += 1
    except:
        i = -1

技能序号 = dict()
for i in range(len(技能列表)):
    技能序号[技能列表[i].名称] = i

一觉序号 = 0
二觉序号 = 0
三觉序号 = 0
for i in 技能列表:
    if i.所在等级 == 50:
        一觉序号 = 技能序号[i.名称]
    if i.所在等级 == 85:
        二觉序号 = 技能序号[i.名称]
    if i.所在等级 == 100:
        三觉序号 = 技能序号[i.名称]

护石选项 = ['无']
for i in 技能列表:
    if i.是否有伤害 == 1 and i.是否有护石 == 1:
        护石选项.append(i.名称)

符文选项 = ['无']
for i in 技能列表:
    if i.所在等级 >= 20 and i.所在等级 <= 80 and i.所在等级 != 50 and i.是否有伤害 == 1:
        符文选项.append(i.名称)


class 职业属性(角色属性):
    实际名称 = '隐夜·死灵术士'
    角色 = '暗夜使者'
    职业 = '死灵术士'

    武器选项 = ['匕首', '手杖']

    类型选择 = ['魔法百分比']

    类型 = '魔法百分比'
    防具类型 = '轻甲'
    防具精通属性 = ['智力']

    主BUFF = 2.14

    远古记忆 = 0

    一觉Buff开关 = 0
    王子显示开关 = 0
    大巴显示开关 = 0

    def __init__(self):
        基础属性输入(self)
        self.技能栏 = deepcopy(技能列表)
        self.技能序号 = deepcopy(技能序号)

    def 被动倍率计算(self):
        if self.一觉Buff开关 == 1:
            self.一觉提升技能1 = ['降临：尼古拉斯', '降临：尼古拉斯(艾克洛索)']
            self.一觉提升技能2 = ['降临：暴君巴拉克',
                            '暗击拳', '巴拉克强击', '杀戮乱舞']
            self.技能栏[self.技能序号['千魂祭']].自定义描述 = 1
            for i in self.一觉提升技能1:
                x = self.技能栏[self.技能序号[i]]
                x.等级 += 5
            for j in self.一觉提升技能2:
                x = self.技能栏[self.技能序号[j]]
                x.等级 += 4
        if self.大巴显示开关 == 0:
            self.技能栏[self.技能序号['降临：暴君巴拉克']].备注 = ''
        if self.王子显示开关 == 0:
            self.技能栏[self.技能序号['降临：尼古拉斯']].备注 = ''

        if self.装备检查('守护的抉择'):
            if self.护石第一栏 == '杀戮乱舞':
                self.技能栏[self.技能序号['暗击拳']].CD *= 0.7
                self.技能栏[self.技能序号['暗击拳']].倍率 *= 1.55
                self.技能栏[self.技能序号['巴拉克强击']].CD *= 0.7
                self.技能栏[self.技能序号['巴拉克强击']].倍率 *= 1.55
                self.技能栏[self.技能序号['降临：暴君巴拉克']].倍率 *= 1.55
            if self.护石第二栏 == '杀戮乱舞':
                self.技能栏[self.技能序号['暗击拳']].CD *= 0.75
                self.技能栏[self.技能序号['暗击拳']].倍率 *= 1.45
                self.技能栏[self.技能序号['巴拉克强击']].CD *= 0.75
                self.技能栏[self.技能序号['巴拉克强击']].倍率 *= 1.45
                self.技能栏[self.技能序号['降临：暴君巴拉克']].倍率 *= 1.45

        super().被动倍率计算()
        self.暗属性强化 += self.技能栏[self.技能序号['黑暗之环']].属强加成()

        self.技能栏[self.技能序号['降临：尼古拉斯(艾克洛索)']].等级 = self.技能栏[self.技能序号['降临：尼古拉斯']].等级
        self.技能栏[self.技能序号['降临：尼古拉斯(艾克洛索)']].TP等级 = self.技能栏[self.技能序号['降临：尼古拉斯']].TP等级

        for i in [self.技能序号['暗击拳'], self.技能序号['巴拉克强击'], self.技能序号['杀戮乱舞']]:
            self.技能栏[i].等级 = self.技能栏[self.技能序号['降临：暴君巴拉克']].等级
            self.技能栏[i].TP等级 = self.技能栏[self.技能序号['降临：暴君巴拉克']].TP等级


    def 数据计算(self, x=0, y=-1):
        self.预处理()
        # 初步计算
        技能释放次数 = self.技能释放次数计算()
        技能单次伤害 = self.技能单次伤害计算(y)
        技能总伤害 = self.技能总伤害计算(技能释放次数, 技能单次伤害)

        if self.技能栏[self.技能序号['降临：暴君巴拉克']].等级 != 0 and self.大巴显示开关 == 0:
            技能总伤害[self.技能序号['降临：暴君巴拉克']] += 技能总伤害[self.技能序号['暗击拳']] + 技能总伤害[self.技能序号['巴拉克强击']] + 技能总伤害[self.技能序号['杀戮乱舞']]
            技能总伤害[self.技能序号['暗击拳']] = 0
            技能总伤害[self.技能序号['巴拉克强击']] = 0
            技能总伤害[self.技能序号['杀戮乱舞']] = 0

        if self.技能栏[self.技能序号['降临：尼古拉斯']].等级 != 0 and self.王子显示开关 == 0:
            技能总伤害[self.技能序号['降临：尼古拉斯']] += 技能总伤害[self.技能序号['降临：尼古拉斯(艾克洛索)']]
            技能总伤害[self.技能序号['降临：尼古拉斯(艾克洛索)']] = 0

                # 返回结果
        return self.数据返回(x, 技能释放次数, 技能总伤害)


class 隐夜·死灵术士(角色窗口):
    def 窗口属性输入(self):
        self.初始属性 = 职业属性()
        self.角色属性A = 职业属性()
        self.角色属性B = 职业属性()
        self.一觉序号 = 一觉序号
        self.二觉序号 = 二觉序号
        self.三觉序号 = 三觉序号
        self.护石选项 = deepcopy(护石选项)
        self.符文选项 = deepcopy(符文选项)

    def 界面(self):
        super().界面()
        self.一觉Buff开关 = QCheckBox('一觉Buff', self.main_frame2)
        self.一觉Buff开关.resize(200, 20)
        self.一觉Buff开关.move(335, 420)
        self.一觉Buff开关.setStyleSheet(复选框样式)
        self.一觉Buff开关.setChecked(True)

        self.王子显示开关 = QCheckBox('降临：尼古拉斯拆分显示', self.main_frame2)
        self.王子显示开关.resize(200, 20)
        self.王子显示开关.move(335, 450)
        self.王子显示开关.setStyleSheet(复选框样式)
        self.王子显示开关.setChecked(False)

        self.大巴显示开关 = QCheckBox('降临：暴君巴拉克拆分显示', self.main_frame2)
        self.大巴显示开关.resize(200, 20)
        self.大巴显示开关.move(335, 480)
        self.大巴显示开关.setStyleSheet(复选框样式)
        self.大巴显示开关.setChecked(False)

        self.职业存档.append(('一觉Buff开关', self.一觉Buff开关, 0))
        self.职业存档.append(('王子显示开关', self.王子显示开关, 0))
        self.职业存档.append(('大巴显示开关', self.大巴显示开关, 0))

    def 输入属性(self, 属性, x=0):
        super().输入属性(属性, x)
        if self.一觉Buff开关.isChecked():
            属性.一觉Buff开关 = 1
        if self.觉醒选择状态 == 1:
            属性.一觉Buff开关 = 0
        if self.王子显示开关.isChecked():
            属性.王子显示开关 = 1
        if self.大巴显示开关.isChecked():
            属性.大巴显示开关 = 1

    def 强化觉醒选择(self, index):
        self.觉醒选择状态 = index
        if index == 1:
            self.一觉遮罩透明度.setOpacity(0.0)
            self.二觉遮罩透明度.setOpacity(0.5)
            self.一觉Buff开关.setEnabled(False)
            self.一觉Buff开关.setStyleSheet(复选框样式)
        if index == 2:
            self.一觉遮罩透明度.setOpacity(0.5)
            self.二觉遮罩透明度.setOpacity(0.0)
            self.一觉Buff开关.setEnabled(True)
            self.一觉Buff开关.setStyleSheet(复选框样式)

        self.一觉遮罩.setGraphicsEffect(self.一觉遮罩透明度)
        self.二觉遮罩.setGraphicsEffect(self.二觉遮罩透明度)
